// HTTP请求拦截器配置
import axios from 'axios';
import { removeToken } from '../utils/auth';
import { message } from 'antd';

/**
 * 设置全局响应拦截器
 * 主要用于处理401未授权错误
 */
export const setupInterceptors = () => {
  // 响应拦截器
  axios.interceptors.response.use(
    (response) => {
      // 请求成功，直接返回响应
      return response;
    },
    (error) => {
      // 处理响应错误
      if (error.response) {
        const { status } = error.response;
        
        // 处理401未授权错误
        if (status === 401) {
          console.log('🔐 检测到401错误，用户未授权或token已过期');
          
          // 显示提示信息
          message.error('登录已过期，请重新登录');
          
          // 清理认证信息
          removeToken();
          
          // 延迟跳转，让用户看到提示信息
          setTimeout(() => {
            // 跳转到登录页面
            window.location.href = '/';
          }, 1000);
        }
        
        // 处理其他HTTP错误
        else if (status === 403) {
          message.error('权限不足，无法访问该资源');
        }
        else if (status === 404) {
          message.error('请求的资源不存在');
        }
        else if (status >= 500) {
          message.error('服务器错误，请稍后重试');
        }
      }
      
      // 继续抛出错误，让具体的请求处理函数可以进一步处理
      return Promise.reject(error);
    }
  );
};

/**
 * 清理拦截器
 */
export const clearInterceptors = () => {
  // 清除所有响应拦截器
  axios.interceptors.response.clear();
};